//磨皮效果器的 Horizontal Fragment shader 文件内容  
static const char* WHITENING_EFFECT_HORIZONTAL_FRAG_SHADER = 
	"varying highp vec2 fragTexCoord;	\n"
	"uniform sampler2D yuvTexSampler;	\n"
	"uniform highp float texCoordOffset;	\n"
	"uniform mediump float amplitude;	\n"
	"uniform mediump float edger;	\n"
	"void main()		\n"
	"{	\n"	
        "mediump vec4 color = texture2D(yuvTexSampler, fragTexCoord);	\n"
        "mediump vec2 blurMultiplyVec = vec2(texCoordOffset, 0.0);	\n"
        "mediump vec3 Ixy = vec3(0.0, 0.0, 0.0);	\n"
        "mediump vec3 coefficientNum = vec3(0.0, 0.0, 0.0);	\n"
        "mediump vec3 gradSum = vec3(0.0, 0.0, 0.0);	\n"
        "mediump vec4 color_hor = vec4(0.0, 0.0, 0.0, 0.0);	\n"
        "mediump vec3 color_step = vec3(0.0, 0.0, 0.0);	\n"
        "color_hor = texture2D(yuvTexSampler, fragTexCoord + vec2(-6.0) * blurMultiplyVec);	\n"
        "color_step = step(abs(color_hor.rgb - color.rgb), vec3(amplitude));	\n"
"color_step = color_step * 0.02;    \n"
        "Ixy += (color_step * color_hor.rgb);	\n"
        "coefficientNum += color_step;	\n"
        "color_hor = texture2D(yuvTexSampler, fragTexCoord + vec2(-5.0) * blurMultiplyVec);	\n"
        "color_step = step(abs(color_hor.rgb - color.rgb), vec3(amplitude));	\n"
"color_step = color_step * 0.03;    \n"
        "Ixy += (color_step * color_hor.rgb);	\n"
        "coefficientNum += color_step;	\n"
        "color_hor = texture2D(yuvTexSampler, fragTexCoord + vec2(-4.0) * blurMultiplyVec);	\n"
        "gradSum -= color_hor.rgb;	\n"
        "color_step = step(abs(color_hor.rgb - color.rgb), vec3(amplitude));	\n"
"color_step = color_step * 0.05;    \n"
        "Ixy += (color_step * color_hor.rgb);	\n"
        "coefficientNum += color_step;	\n"
        "color_hor = texture2D(yuvTexSampler, fragTexCoord + vec2(-3.0) * blurMultiplyVec);	\n"
        "gradSum -= color_hor.rgb;	\n"
        "color_step = step(abs(color_hor.rgb - color.rgb), vec3(amplitude));	\n"
"color_step = color_step * 0.09;    \n"
        "Ixy += (color_step * color_hor.rgb);	\n"
        "coefficientNum += color_step;	\n"
        "color_hor = texture2D(yuvTexSampler, fragTexCoord + vec2(-2.0) * blurMultiplyVec);	\n"
        "gradSum -= color_hor.rgb;	\n"
        "color_step = step(abs(color_hor.rgb - color.rgb), vec3(amplitude));	\n"
"color_step = color_step * 0.12;    \n"
        "Ixy += (color_step * color_hor.rgb);	\n"
        "coefficientNum += color_step;	\n"
        "color_hor = texture2D(yuvTexSampler, fragTexCoord + vec2(-1.0) * blurMultiplyVec);	\n"
        "gradSum -= color_hor.rgb;	\n"
        "color_step = step(abs(color_hor.rgb - color.rgb), vec3(amplitude));	\n"
"color_step = color_step * 0.15;    \n"
        "Ixy += (color_step * color_hor.rgb);	\n"
        "coefficientNum += color_step;	\n"
"color_step =  vec3(0.18, 0.18, 0.18);    \n"
        "Ixy += color.rgb * color_step;	\n"
        "coefficientNum += color_step;	\n"
        "color_hor = texture2D(yuvTexSampler, fragTexCoord + vec2(1.0) * blurMultiplyVec);	\n"
        "gradSum += color_hor.rgb;	\n"
        "color_step = step(abs(color_hor.rgb - color.rgb), vec3(amplitude));	\n"
"color_step = color_step * 0.15;    \n"
        "Ixy += (color_step * color_hor.rgb);	\n"
        "coefficientNum += color_step;	\n"
        "color_hor = texture2D(yuvTexSampler, fragTexCoord + vec2(2.0) * blurMultiplyVec);	\n"
        "gradSum += color_hor.rgb;	\n"
        "color_step = step(abs(color_hor.rgb - color.rgb), vec3(amplitude));	\n"
"color_step = color_step * 0.12;    \n"
        "Ixy += (color_step * color_hor.rgb);	\n"
        "coefficientNum += color_step;	\n"
        "color_hor = texture2D(yuvTexSampler, fragTexCoord + vec2(3.0) * blurMultiplyVec);	\n"
        "gradSum += color_hor.rgb;	\n"
        "color_step = step(abs(color_hor.rgb - color.rgb), vec3(amplitude));	\n"
"color_step = color_step * 0.09;    \n"
        "Ixy += (color_step * color_hor.rgb);	\n"
        "coefficientNum += color_step;	\n"
        "color_hor = texture2D(yuvTexSampler, fragTexCoord + vec2(4.0) * blurMultiplyVec);	\n"
        "gradSum += color_hor.rgb;	\n"
        "color_step = step(abs(color_hor.rgb - color.rgb), vec3(amplitude));	\n"
"color_step = color_step * 0.05;    \n"
        "Ixy += (color_step * color_hor.rgb);	\n"
        "coefficientNum += color_step;	\n"
        "color_hor = texture2D(yuvTexSampler, fragTexCoord + vec2(5.0) * blurMultiplyVec);	\n"
        "color_step = step(abs(color_hor.rgb - color.rgb), vec3(amplitude));	\n"
"color_step = color_step * 0.03;    \n"
        "Ixy += (color_step * color_hor.rgb);	\n"
        "coefficientNum += color_step;	\n"
        "color_hor = texture2D(yuvTexSampler, fragTexCoord + vec2(6.0) * blurMultiplyVec);	\n"
        "color_step = step(abs(color_hor.rgb - color.rgb), vec3(amplitude));	\n"
"color_step = color_step * 0.02;    \n"
        "Ixy += (color_step * color_hor.rgb);	\n"
        "coefficientNum += color_step;	\n"
        "Ixy /= coefficientNum;	\n"
        "mediump vec3 grad = vec3(abs(gradSum.r), abs(gradSum.g), abs(gradSum.b)) * edger * 0.1;	\n"
        "mediump vec3 Txy = vec3(min(grad.r, 1.0), min(grad.g, 1.0), min(grad.b, 1.0));	\n"
        "color.rgb = mix(Ixy, color.rgb, Txy);	\n"
        "gl_FragColor = vec4(color);	\n"
	"}\n";
